Qu'est-ce que docker compose network_mode ?

"Docker Compose network_mode" est une directive utilisée dans le fichier de configuration Docker Compose pour spécifier le mode de réseau utilisé par les services déployés. Le mode de réseau détermine comment les conteneurs communiquent entre eux et avec le réseau hôte.

Par défaut, Docker Compose crée un réseau isolé pour les services déployés. Les conteneurs peuvent se découvrir entre eux à l'aide de noms de service comme adresse de réseau. Le réseau par défaut est également capable de résoudre les noms de domaines spécifiés dans le fichier de configuration.

Cependant, il est parfois nécessaire de prendre le contrôle total du réseau utilisé par les conteneurs, notamment dans des cas où vous souhaitez utiliser un réseau externe existant ou lorsque vous utilisez plusieurs réseaux pour différents services. C'est là que la directive "network_mode" intervient.

La directive "network_mode" peut prendre plusieurs valeurs :

  1. "bridge" : c'est la valeur par défaut. Les conteneurs utilisent un réseau bridgé isolé créé par Docker Compose.
  2. "host" : les conteneurs partagent le réseau de l'hôte. Cela signifie que les conteneurs utilisent directement les interfaces réseau de l'hôte.
  3. "none" : les conteneurs sont isolés du réseau et ne peuvent pas communiquer avec d'autres conteneurs ni avec l'hôte.
  4. Un nom de réseau personnalisé : vous pouvez spécifier le nom d'un réseau créé préalablement à l'aide de la commande "docker network create". Les conteneurs utiliseront alors ce réseau pour communiquer entre eux.

Voici un exemple de syntaxe pour utiliser la directive "network_mode" dans un fichier de configuration Docker Compose :

version: '3'
services:
  app:
    build: .
    network_mode: bridge

Dans cet exemple, le service appelé "app" utilisera le réseau bridgé créé par Docker Compose.

En résumé, la directive "network_mode" dans Docker Compose permet de contrôler le mode de réseau utilisé par les services déployés. Il offre la flexibilité d'utiliser des réseaux isolés, externes ou partagés avec l'hôte en fonction des besoins spécifiques de votre application.